home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / SourceCode / AdobeExamples / NX_ImportAdv / NXBitmapImageRepSub.m < prev    next >
Text File  |  1992-12-19  |  3KB  |  123 lines

  1.  
  2. /*
  3.  * (a)  (C) 1990 by Adobe Systems Incorporated. All rights reserved.
  4.  *
  5.  * (b)  If this Sample Code is distributed as part of the Display PostScript
  6.  *    System Software Development Kit from Adobe Systems Incorporated,
  7.  *    then this copy is designated as Development Software and its use is
  8.  *    subject to the terms of the License Agreement attached to such Kit.
  9.  *
  10.  * (c)  If this Sample Code is distributed independently, then the following
  11.  *    terms apply:
  12.  *
  13.  * (d)  This file may be freely copied and redistributed as long as:
  14.  *    1) Parts (a), (d), (e) and (f) continue to be included in the file,
  15.  *    2) If the file has been modified in any way, a notice of such
  16.  *      modification is conspicuously indicated.
  17.  *
  18.  * (e)  PostScript, Display PostScript, and Adobe are registered trademarks of
  19.  *    Adobe Systems Incorporated.
  20.  * 
  21.  * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO
  22.  *    CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED
  23.  *    AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED.
  24.  *    ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY
  25.  *    OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO
  26.  *    WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY)
  27.  *    WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY
  28.  *    DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, 
  29.  *    FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT
  30.  *    OF THIRD PARTY RIGHTS.
  31.  */
  32.  
  33. /*
  34.  *    NXBitmapImageRepSub.m
  35.  *
  36.  *    A subclass of NXBitmapImageRep. Enhanced to handle rotation
  37.  *    and resources.
  38.  *
  39.  *    Version:    2.0
  40.  *    Author:    Ken Fromm
  41.  */
  42.  
  43. #import "NXBitmapImageRepSub.h"
  44.  
  45. #import <appkit/Panel.h>
  46. #import <appkit/View.h>
  47. #import <appkit/nextstd.h>
  48.  
  49. #import <objc/List.h>
  50. #import <objc/hashtable.h>
  51. #import <dpsclient/wraps.h>
  52.  
  53. @implementation NXBitmapImageRepSub
  54.  
  55. /*
  56. *    Used when printing. Add the resources used in this file
  57. *    to the list passed in. Adds the filename if it exists and if
  58. *    it is not currently in the resourceDoc structure.
  59. */
  60. - addResources:(Resource *) resourceDoc  forFile:(NXAtom) fileName
  61. {
  62.     id            name;
  63.  
  64.      int            i;
  65.  
  66.     if (_fileName || fileName)
  67.     {
  68.         i = RES_SUPPLIED;
  69.         if (_fileName)
  70.         {
  71.             name = (id) _fileName;
  72.             if (NXDrawingStatus == NX_COPYING)
  73.                 i = RES_NEEDED;
  74.         }
  75.         else
  76.             name = (id) fileName;
  77.  
  78.         if (!resourceDoc[RES_FILES].states[RES_PRESENT])
  79.             resourceDoc[RES_FILES].states[RES_PRESENT] = [List  new];
  80.         if (!resourceDoc[RES_FILES].states[RES_NEEDED])
  81.             resourceDoc[RES_FILES].states[i] = [List  new];
  82.  
  83.         [resourceDoc[RES_FILES].states[RES_PRESENT]  addObjectIfAbsent:name];
  84.         [resourceDoc[RES_FILES].states[i]  addObjectIfAbsent:name];
  85.     }
  86.  
  87.     return self;
  88. }
  89.  
  90. /*
  91.  *    Draws the Tiff file. Positions it appropriately, scaling and rotating
  92.  *    it according to the arguments passed in. The rotation is in degrees.
  93.  */
  94. - (BOOL) drawIn:(NXRect *) r  with:(float) rotation
  95. {
  96.     BOOL        error;
  97.  
  98.     error = NO;
  99.     if (NXDrawingStatus == NX_COPYING)
  100.     {
  101.         if (_fileName)
  102.         {
  103.         }
  104.         else
  105.         {
  106.         }
  107.     }
  108.     else
  109.     {
  110.         PSgsave();
  111.         PStranslate(r->origin.x, r->origin.y);
  112.         PSrotate(rotation);
  113.         PSscale(r->size.width/size.width, r->size.height/size.height);
  114.  
  115.         error = [self  draw];
  116.         PSgrestore();
  117.     }
  118.  
  119.     return error;
  120. }
  121.  
  122. @end
  123.